<?php

namespace app\api\controller;

use app\common\service\MqttNewService;

class Work
{
    protected $server='47.109.198.201';
    protected $port = 1883;
    protected $username = '';
    protected $password='';

    /**
     * 发布者发布消息
     */
    public function preOrder($topic,$msg)
    {
        $clientId = 'test_emqx'. rand(1000000, 99999999);
        $mqtt = new MqttNewService($this->server, $this->port, $clientId);
        if ($mqtt->connect(true, NULL, $this->username, $this->password)) {
            $mqtt->publish($topic, $msg, 0, false);
            $mqtt->close();
        } else {
            echo "Time out!\n";
        }
    }
    
    /**
     * 企业微信回调
     */
    public function qwBack()
    {
        // 假设企业号在公众平台上设置的参数如下
        $encodingAesKey = "xxx";
        $token = "xxx";
        $corpId = "xxx";//填写自己的相关参数，与微信公众平台一致
        /*
        ------------使用示例一：验证回调URL---------------
        *企业开启回调模式时，企业号会向验证url发送一个get请求
        假设点击验证时，企业收到类似请求：
        * GET /cgi-bin/wxpush?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3×tamp=1409659589&nonce=263014780&echostr=P9nAzCzyDtyTWESHep1vC5X9xho%2FqYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp%2B4RPcs8TgAE7OaBO%2BFZXvnaqQ%3D%3D
        * HTTP/1.1 Host: qy.weixin.qq.com
        接收到该请求时，企业应
        1.解析出Get请求的参数，包括消息体签名(msg_signature)，时间戳(timestamp)，随机数字串(nonce)以及公众平台推送过来的随机加密字符串(echostr),
        这一步注意作URL解码。
        2.验证消息体签名的正确性
        3. 解密出echostr原文，将原文当作Get请求的response，返回给公众平台
        第2，3步可以用公众平台提供的库函数VerifyURL来实现。
        */
        // $sVerifyMsgSig = HttpUtils.ParseUrl("msg_signature");
        $sVerifyMsgSig = $_GET["msg_signature"];//"5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3";
        // $sVerifyTimeStamp = HttpUtils.ParseUrl("timestamp");
        $sVerifyTimeStamp = $_GET["timestamp"];//"1409659589";
        // $sVerifyNonce = HttpUtils.ParseUrl("nonce");
        $sVerifyNonce = $_GET["nonce"];//"263014780";
        // $sVerifyEchoStr = HttpUtils.ParseUrl("echostr");
        $sVerifyEchoStr = $_GET["echostr"];//"P9nAzCzyDtyTWESHep1vC5X9xho/qYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp+4RPcs8TgAE7OaBO+FZXvnaqQ==";
        // 需要返回的明文
        $EchoStr = "";
        $wxcpt = new \WXBizMsgCrypt($token, $encodingAesKey, $corpId);
        $errCode = $wxcpt->VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);
        if ($errCode == 0)
        {
            echo $sEchoStr;
            //
            // 验证URL成功，将sEchoStr返回
            // HttpUtils.SetResponce($sEchoStr);
        }

        else {
            print("ERR: " . $errCode . "\n\n");
        }

    }


}